home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / gfx / conv / hp2xx_1_04.lha / bin / ixconfig.c < prev   
C/C++ Source or Header  |  1992-09-24  |  5KB  |  157 lines

  1. /*
  2.  *  This file is part of ixemul.library for the Amiga.
  3.  *  Copyright (C) 1991, 1992  Markus M. Wild
  4.  *
  5.  *  This library is free software; you can redistribute it and/or
  6.  *  modify it under the terms of the GNU Library General Public
  7.  *  License as published by the Free Software Foundation; either
  8.  *  version 2 of the License, or (at your option) any later version.
  9.  *
  10.  *  This library is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  *  Library General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU Library General Public
  16.  *  License along with this library; if not, write to the Free
  17.  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19.  
  20. #include <stdio.h>
  21. #include <stdlib.h>
  22. #include <unistd.h>
  23. #include <string.h>
  24. /* NOT (!) to be used by custom applications, this is a very special case !! */
  25. #include "/gcc/library/ixemul.h"
  26.  
  27. extern struct ixemul_base *ixemulbase;
  28.  
  29. int
  30. main (int argc, char *argv[])
  31. {
  32.   int c;
  33.   int do_dots = ixemulbase->ix_translate_dots;
  34.   int do_slash = ixemulbase->ix_translate_slash;
  35.   int mem_buf = ixemulbase->ix_membuf_limit;
  36.   int do_force = ixemulbase->ix_force_translation;
  37.   int do_links = ixemulbase->ix_translate_symlinks;
  38.   int do_sleep = 0;
  39.   int red_zone_size = ixemulbase->ix_red_zone_size;
  40.   int do_watch = ixemulbase->ix_watch_stack;
  41.   int fs_buf_factor = ixemulbase->ix_fs_buf_factor;
  42.   int ignore_global_env = ixemulbase->ix_ignore_global_env;
  43.  
  44.   while ((c = getopt (argc, argv, "./?ab:dfhilm:r:swx")) != EOF)
  45.     switch (c)
  46.       {
  47.       case 'd':      
  48.         mem_buf = 0;
  49.         /* fall into */
  50.  
  51.       case 'a':
  52.         do_dots =
  53.           do_slash = 
  54.             do_force = 
  55.           do_links = 0;
  56.         break;
  57.  
  58.       case 'b':
  59.         fs_buf_factor = atoi (optarg);
  60.         if (! fs_buf_factor)
  61.           fs_buf_factor = 64;
  62.         break;
  63.       
  64.       case '.':
  65.           do_dots = 1;
  66.           break;
  67.           
  68.       case '/':
  69.         do_slash = 1;
  70.         break;
  71.         
  72.       case 'f':
  73.         do_force = 1;
  74.         break;
  75.  
  76.       case 'i':
  77.         ignore_global_env = 1;
  78.         break;
  79.  
  80.       case 'l':
  81.     do_links = 1;
  82.     break;
  83.  
  84.       case 'm':
  85.         mem_buf = atoi (optarg);
  86.     break;
  87.  
  88.       case 'r':
  89.     red_zone_size = atoi (optarg);
  90.     break;
  91.  
  92.       case 's':
  93.         do_sleep = 1;
  94.         break;
  95.  
  96.       case 'w':
  97.     do_watch = 1;
  98.     break;
  99.  
  100.       case 'x':
  101.           do_watch = 0;
  102.           break;
  103.  
  104.       default:
  105.     fprintf (stderr, "%s [-d|-a|-b N|-f|-.|-/|-m N|-r N|-s|-w|-x]\n", argv[0]);
  106.     fprintf (stderr, "  -d     reset values to defaults\n"
  107.              "  -a   full AmigaDOS mode, no ./ translations\n"
  108.              "  -b N N physical block map into 1 logical (stdio) block\n"
  109.              "  -f   don't accept AmigaDOS notation\n"
  110.              "  -i   ignore global environment (ENV:)\n"
  111.              "  -.   translate . and ..\n"
  112.              "  -/   translate /foo -> foo: and a//b -> a/b\n"
  113.              "  -l   translate contents of symbolic links\n"
  114.              "  -m N files upto N bytes are cached in memory\n"
  115.              "  -r N set red zone size to N bytes. 0 disables.\n"
  116.              "  -s   sleep, don't return.\n"
  117.              "  -w   enable stack watcher\n"
  118.              "  -x   disable stack watcher\n");
  119.     exit (1);
  120.       }
  121.  
  122.   ixemulbase->ix_translate_dots = do_dots;
  123.   ixemulbase->ix_translate_slash = do_slash;
  124.   ixemulbase->ix_translate_symlinks = do_links;
  125.   ixemulbase->ix_force_translation = do_force;
  126.   ixemulbase->ix_membuf_limit = mem_buf;
  127.   ixemulbase->ix_red_zone_size = red_zone_size;
  128.   ixemulbase->ix_watch_stack = do_watch;
  129.   ixemulbase->ix_fs_buf_factor = fs_buf_factor;
  130.   ixemulbase->ix_ignore_global_env = ignore_global_env;
  131.   
  132.   printf ("%sranslate . and .., %stranslate /, %stranslate symlinks,\n"
  133.       "%sallow AmigaDOS notation, membuf size = %d,\n"
  134.       "red zone size = %d, stack watcher is %s %s,\n"
  135.       "%d physical blocks build%s one logical block (for stdio),\n"
  136.       "%s global environment (ENV:).\n",
  137.           do_dots ? "T" : "Don't t ",
  138.           do_slash ? "" : "don't ",
  139.           do_links ? "" : "don't ",
  140.           do_force ? "don't " : "",
  141.           mem_buf,
  142.       red_zone_size,
  143.       do_watch ? "enabled" : "disabled",
  144.       red_zone_size ? (do_watch ? "(and active)" : "(and not active)")
  145.             : (do_watch ? "(but not active)" : "(and not active)"),
  146.       fs_buf_factor, fs_buf_factor == 1 ? "s" : "",
  147.       ignore_global_env ? "Ignore" : "Don't ignore");
  148.  
  149.   /* if -s is specified, the program keeps the library open until it is 
  150.      interrupted. That way, the library can't be flushd, so the preferences
  151.      are not reset */
  152.   if (do_sleep)
  153.     pause ();
  154.  
  155.   return 0;
  156. }
  157.